# token暗号需要满足的要求
# 1. 不能是明文，只能是密文
# 2. 暗号中需要包含用户标识等关键信息
# 3. 暗号只有生成者才能解析
# 4. 暗号应该有一个有效期
from itsdangerous import TimedJSONWebSignatureSerializer as Serializer, BadSignature, SignatureExpired

# 1. 生成token
# 1.2 添加密钥：密钥不要泄露出去，越复杂越好
secret_key = '@@4_i!3(^$i+t7_'
# 1.1. 定义存储用户标识信息的字典
user_dict = {'user_id': 168, 'email': 'demo@qq.com'}
# 1.3 实例化TimedJSONWebSignatureSerializer的对象
# secret_key： 密钥   expires_in： 过期时间（单位是秒）
ser = Serializer(secret_key, expires_in=30)
# 1.3 生成token 并打印输出
token = ser.dumps(user_dict).decode()
print(token)

# # 2. 解析token
# token = 'eyJhbGciOiJIUzUxMiIsImlhdCI6MTYzNzkwNzIwNSwiZXhwIjoxNjM3OTA3MjM1fQ.eyJ1c2VyX2lkIjoxNjgsImVtYWlsIjoiZGVtb0BxcS5jb20ifQ.qU-Hd0kj-rDFwH6sshuUXPB7D-Y3sgmUNSogzOa6OIPjPuzbuoKfOODtOjg91pbOZml_-RQP1gz-SMcaKUQkiQ'
ser = Serializer(secret_key)
user_dict_resolve = ser.loads(token)
# 如果token或者签名不正确，会抛出BadSignature异常
# 如果token过期了，则会抛出SignatureExpired的异常
print(user_dict_resolve)